home *** CD-ROM | disk | FTP | other *** search
/ EuroCD 3 / EuroCD 3.iso / Communication / System-X / SX / Developer / SASC / Example2.c < prev    next >
C/C++ Source or Header  |  1998-06-24  |  2KB  |  101 lines

  1. /*
  2.  
  3. ----------------------------------------------------
  4.  Programming doors for System-X using EXEC-MESSAGES
  5. ----------------------------------------------------
  6.  
  7. See the botton of this source!
  8.  
  9. */
  10.  
  11. #include <stdio.h>
  12. #include <string.h>
  13. #include <stdlib.h>
  14. #include <proto/exec.h>
  15. #include <proto/dos.h>
  16.  
  17. struct MsgPort *bbsport;
  18.  
  19. struct JHMessage
  20. {
  21.   struct Message Msg;
  22.   char String[200];
  23.   int Data;
  24.   int Command;
  25.   int NodeID;
  26.   int LineNum;
  27.   unsigned long signal;
  28.   struct Process *task;
  29.   APTR *Semi;
  30.   APTR Filler1;
  31.   APTR Filler2;
  32. };
  33. struct JHMessage themsg;
  34.  
  35.  
  36. void PS(char * str);
  37. void XIMFunction(int func, long data, char * str);
  38. void Door(void);
  39.  
  40. BOOL sx;
  41.  
  42.  
  43. int main(int argc, char *argv[])
  44. {
  45.     char portname[16];
  46.  
  47.     if(argv[1][0]==0)
  48.     {
  49.         PutStr("This program requires System-X BBS Software\n");
  50.     } else {
  51.         sprintf(portname, "AEDoorPort%s", argv[1]);
  52.         bbsport = FindPort(portname);
  53.         if(bbsport)
  54.         {
  55.             XIMFunction(1, 0, 0);     /* function 1 = register */
  56.  
  57.             /* find out if we are under SYSTEM-X or AmiExpress */
  58.  
  59.             if(strcmp(themsg.String,"SX")==0) sx=TRUE; else sx=FALSE;
  60.  
  61.             Door();
  62.  
  63.             XIMFunction(2, 0, 0);     /* function 2 = shutdown */
  64.         }
  65.     }
  66. }
  67.  
  68. void PS(char * str)
  69. {
  70.     if(sx) XIMFunction(1500, (long)str, 0); else XIMFunction(4, 0, str);
  71. }
  72.  
  73. void XIMFunction(int func, long data, char * str)
  74. {
  75.     struct MsgPort *replyport;
  76.  
  77.     replyport = CreateMsgPort();
  78.     if(replyport)
  79.     {
  80.         themsg.Msg.mn_Length    = sizeof(struct JHMessage);
  81.         themsg.Msg.mn_ReplyPort    = replyport;
  82.         themsg.Data         = data;
  83.         themsg.Command         = func;
  84.         if(str && str[0]!=0) strcpy(themsg.String, str);
  85.         PutMsg(bbsport, (struct Message *)&themsg);
  86.         WaitPort(replyport);
  87.         DeleteMsgPort(replyport);
  88.     }
  89. }
  90.  
  91. /* ============ PUT YOUR DOOR IN HERE ============== */
  92.  
  93. void Door(void)
  94. {
  95.     PS("Hello! Welcome to a test door\r\n\r\n");
  96.     XIMFunction(5, 40, "Please enter some text: ");
  97.     PS("\r\n\r\nYou entered: ");
  98.     PS(themsg.String);
  99.     PS("\r\n\r\nExiting...\r\n\r\n");
  100. }
  101.